
# Головной файл, определящий процесс тестирования.
# В качестве базового инструмента используется lit.
# Файл напсан так, чтобы его можно было использовать и при отсутствии
# построенной LLVM - должны быть доступны лишь llvm-lit и FileCheck.

# Берём lit из LLVM. Можно построить отдельно и подать в макрос LLVM_EXTERNAL_LIT.
set(LIT_TOOL_DIR "${LLVM_BINARY_DIR}/bin")
set(LIT_TOOL_FILE "llvm-lit")
# "LLVM_EXTERNAL_LIT" - имя, распознаваемое cmake ф-цией get_llvm_lit_path, доступной
# по включению файла AddLLVM.cmake из LLVM. Здесь это не используется и переменная может
# быть названа как угодно.
set(LLVM_EXTERNAL_LIT ${LIT_TOOL_DIR}/${LIT_TOOL_FILE} CACHE STRING "Command used to spawn lit")

# Configure the lit site configuration by replacing variables.
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
)

function(add_lit_target target filter test_dir)
  set(LIT_COMMAND "${LLVM_EXTERNAL_LIT}")
  add_custom_target(${target}
    COMMAND ${LIT_COMMAND} -vv --filter=${filter} ${test_dir}
    COMMENT "Исполняем lit тесты ${filter} ..."
    USES_TERMINAL
  )
  if (NOT("${ARGN}" STREQUAL ""))
    add_dependencies(${target} ${ARGN})
  endif()
endfunction()

add_lit_target(test-llvm "e2e/" ${CMAKE_CURRENT_BINARY_DIR} ${TARGET_NAME} ${PLUGIN_NAME})
add_lit_target(test-tablegen "tablegen/" ${CMAKE_CURRENT_BINARY_DIR})
